package br.com.pattern.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import br.com.pattern.model.Compra;

public class CompraDao extends GenericDao{

	protected CompraDao(ConnectionDataBaseGeneric connectionDataBaseGeneric) {
		super(connectionDataBaseGeneric);		
	}
	
	public void salvar(Compra compra){
		String insert = "INSERT INTO compras(data, hora, valor_total, quantidade, id_produto, id_categoria_produto, id_fornecedor) VALUES(?,?,?,?,?,?,?)";

		save(insert, new java.sql.Date(compra.getData().getTimeInMillis()), compra.getHora(), compra.getValor_total(), compra.getQuantidade(), compra.getIdProduto(), compra.getIdCategoriaProduto(), compra.getIdFornecedor());
	}

	public void alterar(Compra compra){

		String update = "UPDATE compra SET data=?, hora=?, valor_total=?, quantidade=?, id_produto=?, id_categoria_produto=?, id_fornecedor WHERE id=?";

		update(update, new java.sql.Date(compra.getData().getTimeInMillis()), compra.getHora(), compra.getValor_total(), compra.getQuantidade(), compra.getIdProduto(), compra.getIdCategoriaProduto(), compra.getIdFornecedor(), compra.getId());
	}

	public void excluir(Compra compra){

		String delete = "DELETE FROM compras WHERE id = ?";

		delete(delete, compra.getId());
	}

	public List<Compra> listaVendedores(){

		List<Compra> lista = new ArrayList<Compra>();

		String select = "SELECT * FROM compras";

		try{
			
			PreparedStatement pstmt = getConnection().prepareStatement(select);
			ResultSet rs = pstmt.executeQuery();

			while(rs.next()){
				Compra compra = new Compra();
				
				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("data"));
				compra.setData(data);
				
				compra.setHora(rs.getString("hora"));
				compra.setValor_total(rs.getDouble("valor_total"));
				compra.setQuantidade(rs.getInt("quantidade"));
				compra.setIdProduto(rs.getLong("id_produto"));
				compra.setIdCategoriaProduto(rs.getLong("id_categoria_produto"));
				compra.setIdFornecedor(rs.getLong("id_fornecedor"));

				lista.add(compra);
			}

			rs.close();
			pstmt.close();
			
		}catch(SQLException e){
			e.printStackTrace();
		}

		return lista;
	}
}
